package com.antoco.controlcenter.db;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

/**
 */

public class MySqliteOpenAndCreateHelper extends SQLiteOpenHelper {
    private static int VERSION = 1;
    public static String DBNAME = "video.db";
    //服务订单
    public static String SO_TABLE_NAME = "so";
    //施工涉及业务对象
    public static String SO_INCLUDE_TABLE_NAME = "so_include_bo";
    //业务对象异常记录
    public static String SO_EXCEPTION_TABLE_NAME = "bo_exception";

    public MySqliteOpenAndCreateHelper(Context context) {

        //context :上下文   ， name：数据库文件的名称    factory：用来创建cursor对象，默认为null
        //version:数据库的版本号，从1开始，如果发生改变，onUpgrade方法将会调用,4.0之后只能升不能将
        super(context, DBNAME, null, VERSION);
    }

    //oncreate方法是数据库第一次创建的时候会被调用;  特别适合做表结构的初始化,需要执行sql语句；SQLiteDatabase db可以用来执行sql语句
    @Override
    public void onCreate(SQLiteDatabase db) {
        //通过SQLiteDatabase执行一个创建表的sql语句
        db.execSQL("create table " + SO_TABLE_NAME + "(\n" +
                "   id                   varchar(36) not null ,-- 'ID'\n" +
                "   so_type              varchar(50) ,-- '服务订单类型'\n" +
                "   so_type_name         varchar(100) ,-- '服务订单类型名称'\n" +
                "   srv_big_type         varchar(50) ,-- '服务大类'\n" +
                "   srv_big_type_name    varchar(100) ,-- '服务大类名称'\n" +
                "   srv_id               varchar(36) ,-- '服务条目标识'\n" +
                "   up_so_id             varchar(36) ,-- '上级订单标识'\n" +
                "   org_id               varchar(36) ,-- '所属渠道商标识'\n" +
                "   org_name             varchar(100) ,-- '所属渠道商名称'\n" +
                "   org_my_link_user_id  varchar(36) ,-- '渠道商我方负责人标识'\n" +
                "   org_my_link_user_name varchar(100) ,-- '渠道商我方负责人名称'\n" +
                "   cb_org_srv_id        varchar(36) ,-- '渠道商可用服务条目标识'\n" +
                "   so_include_srv_id    varchar(36) ,-- '项目级订单包含服务标识'\n" +
                "   agree_unit_price     decimal(102) ,-- '协议单价'\n" +
                "   rela_unit_price      decimal(102) ,-- '实际单价'\n" +
                "   case_sum_price       decimal(102) ,-- '项目级合同总价'\n" +
                "   pay_order_id         varchar(36) ,-- '外系统支付流水标识'\n" +
                "   real_srv_num         int ,-- '实际服务数量'\n" +
                "   real_srv_from_date   varchar(10) ,-- '实际服务起始日期'\n" +
                "   real_srv_to_date     varchar(10) ,-- '实际服务截至日期'x\n" +
                "   real_srv_time_long   int ,-- '实际服务时长'\n" +
                "   real_sum_price       decimal(102) ,-- '实际服务总价（应收金额）'\n" +
                "   had_get_pay          varchar(50) ,-- '是否已收款'\n" +
                "   had_get_pay_name     varchar(100) ,-- '是否已收款名称'\n" +
                "   lease_devi_id        varchar(36) ,-- '租赁设备标识'\n" +
                "   lease_devi_code      varchar(100) ,-- '租赁设备编码'\n" +
                "   lease_devi_name      varchar(100) ,-- '租赁设备名称'\n" +
                "   title                varchar(100) ,-- '订单标题'\n" +
                "   create_user_id       varchar(50) ,-- '订单创建人标识'\n" +
                "   create_user_name     varchar(50) ,-- '订单创建人名称'\n" +
                "   so_req_finish_time   datetime ,-- '订单要求完成时间'\n" +
                "   curr_flow_tache_id   varchar(36) ,-- '当前环节标识'\n" +
                "   curr_flow_tache_code varchar(50) ,-- '当前环节编码'\n" +
                "   curr_flow_tache_name varchar(100) ,-- '当前环节名称'\n" +
                "   curr_task_order_id   varchar(36) ,-- '当前环节单标识'\n" +
                "   curr_disp_elem_type  varchar(50) ,-- '当前环节单处理单位类型'\n" +
                "   curr_disp_elem_type_name varchar(100) ,-- '当前环节单处理单位类型名称'\n" +
                "   curr_disp_elem_id    varchar(36) ,-- '当前环节单处理单位标识'\n" +
                "   curr_disp_elem__name varchar(100) ,-- '当前环节单处理单位名称'\n" +
                "   curr_to_limit_time   datetime ,-- '当前环节单要求完成时间'\n" +
                "   srv_name             varchar(100) ,-- '服务名称'\n" +
                "   srv_remark           varchar(500) ,-- '服务备注'\n" +
                "   srv_specs            varchar(100) ,-- '型号或规格'\n" +
                "   srv_rich_txt_id      varchar(36) ,-- '富文本标识'\n" +
                "   srv_user_id          varchar(36) ,-- '服务人员标识'\n" +
                "   srv_user_name        varchar(100) ,-- '服务人员名称'\n" +
                "   srv_class_price      decimal(102) ,-- '课程培训费'\n" +
                "   ba_price_calc_type   varchar(50) ,-- '施工辅助服务计价方式'\n" +
                "   ba_price_calc_type_name varchar(100) ,-- '施工辅助服务计价方式名称'\n" +
                "   ba_price_calc_unit   varchar(50) ,-- '施工辅助服务计价单位'\n" +
                "   ba_price_calc_unit_name varchar(100) ,-- '施工辅助服务计价单位名称'\n" +
                "   ba_def_unit_price    decimal(102) ,-- '施工辅助服务默认单价'\n" +
                "   ld_price_calc_type   varchar(50) ,-- '租金计算方式'\n" +
                "   ld_price_calc_type_name varchar(100) ,-- '租金计算方式名称'\n" +
                "   ld_price_calc_devi_unit varchar(50) ,-- '租金计算设备单位'\n" +
                "   ld_price_calc_devi_unit_name varchar(100) ,-- '租金计算设备单位名称'\n" +
                "   ld_price_calc_devi_ct int ,-- '租金计算设备数量'\n" +
                "   ld_price_calc_time_unit varchar(50) ,-- '租金计算时长单位'\n" +
                "   ld_price_calc_time_unit_name varchar(100) ,-- '租金计算时长单位名称'\n" +
                "   ld_price_calc_time_long int ,-- '租金计算时长'\n" +
                "   ld_def_unit_price    decimal(102) ,-- '默认租金单价'\n" +
                "   study_from_time      datetime ,-- '培训开始时间'\n" +
                "   study_to_time        datetime ,-- '培训结束时间'\n" +
                "   so_state             varchar(50) ,-- '订单状态'\n" +
                "   so_state_name        varchar(100) ,-- '订单状态名称'\n" +
                "   so_finish_time       datetime ,-- '订单结束时间'\n" +
                "   gis_remark           varchar(500) ,-- '工程位置范围描述'\n" +
                "   gis_id               varchar(36) ,-- '工程位置GIS标识'\n" +
                "   user_id              varchar(50) ,-- '人员标识'\n" +
                "   sync                 varchar(10) ,-- '同步标识'\n" +
                "   create_date          datetime ,-- '创建时间'\n" +
                "   rec_state            varchar(50) ,-- '记录状态'\n" +
                "   rec_state_date       datetime ,-- '记录状态时间'\n" +
                "   partition_city_id    varchar(36) ,-- '分区城市标识'\n" +
                "   partition_year       varchar(4) ,-- '分区年份'\n" +
                "   primary key (id)\n" +
                ")");

        db.execSQL("create table " + SO_TABLE_NAME +"(\n" +
                "   id                   varchar(36) not null ,-- 'ID'\n" +
                "   so_id                varchar(36) ,-- '服务订单ID'\n" +
                "   bo_type              varchar(50) ,-- '业务对象类型'\n" +
                "   bo_type_name         varchar(100) ,-- '业务对象类型名称'\n" +
                "   bo_process_id        varchar(36) ,-- '业务对象标识'\n" +
                "   bo_process_name      varchar(100) ,-- '业务对象名称'\n" +
                "   bo_edit_type         varchar(50) ,-- '业务对象更改类型'\n" +
                "   bo_edit_type_name    varchar(100) ,-- '业务对象更改类型名称'\n" +
                "   build_type           varchar(50) ,-- '施工动作'\n" +
                "   build_type_name      varchar(100) ,-- '施工动作名称'\n" +
                "   build_bef_sta        varchar(50) ,-- '施工前状况标识'\n" +
                "   build_bef_sta_name   varchar(100) ,-- '施工前状况名称'\n" +
                "   build_bef_sta_info   varchar(500) ,-- '施工前状况描述'\n" +
                "   build_aft_sta        varchar(50) ,-- '施工后状况标识'\n" +
                "   build_aft_sta_name   varchar(100) ,-- '施工后状况名称'\n" +
                "   build_aft_sta_info   varchar(500) ,-- '施工后状况描述'\n" +
                "   check_sta            varchar(50) ,-- '验收状况标识'\n" +
                "   check_sta_name       varchar(100) ,-- '验收状况名称'\n" +
                "   check_sta_info       varchar(500) ,-- '验收状况描述'\n" +
                "   task_order_id        varchar(36) ,-- '操作环节单标识'\n" +
                "   user_id              varchar(50) ,-- '人员标识'\n" +
                "   sync                 varchar(10) ,-- '同步标识'\n" +
                "   create_date          datetime ,-- '创建时间'\n" +
                "   rec_state            varchar(50) ,-- '记录状态'\n" +
                "   rec_state_date       datetime ,-- '记录状态时间'\n" +
                "   partition_city_id    varchar(36) ,-- '分区城市标识'\n" +
                "   partition_year       varchar(4) ,-- '分区年份'\n" +
                "   primary key (id)\n" +
                ")");

        db.execSQL("create table " + SO_EXCEPTION_TABLE_NAME +"(\n" +
                "   id                   varchar(36) not null ,-- 'ID'\n" +
                "   so_include_bo_id     varchar(36) ,-- '施工的业务对象记录标识'\n" +
                "   so_id                varchar(36) ,-- '服务订单ID'\n" +
                "   bo_process_id        varchar(36) ,-- '业务对象标识'\n" +
                "   bo_process_name      varchar(100) ,-- '业务对象名称'\n" +
                "   exp_big_type         varchar(50) ,-- '异常大类'\n" +
                "   exp_big_type_name    varchar(100) ,-- '异常大类名称'\n" +
                "   exp_type             varchar(50) ,-- '异常分类'\n" +
                "   exp_type_name        varchar(100) ,-- '异常分类名称'\n" +
                "   exp_info             varchar(500) ,-- '异常描述'\n" +
                "   exp_gis_info         varchar(500) ,-- '异常空间范围描述'\n" +
                "   exp_gis_id           varchar(36) ,-- '异常空间范围GIS标识'\n" +
                "   exp_val              varchar(100) ,-- '异常值'\n" +
                "   exp_ref_val          varchar(100) ,-- '异常参考值'\n" +
                "   exp_val_unit         varchar(50) ,-- '异常值单位'\n" +
                "   exp_val_unit_name    varchar(100) ,-- '异常值单位名称'\n" +
                "   exp_solve_type       varchar(50) ,-- '异常解决情况标识'\n" +
                "   exp_solve_type_name  varchar(100) ,-- '异常解决情况名称'\n" +
                "   exp_solve_info       varchar(500) ,-- '异常解决情况描述'\n" +
                "   check_sta            varchar(50) ,-- '验收情况标识'\n" +
                "   check_sta_name       varchar(100) ,-- '验收情况名称'\n" +
                "   check_sta_info       varchar(500) ,-- '验收情况描述'\n" +
                "   task_order_id        varchar(36) ,-- '操作环节单标识'\n" +
                "   user_id              varchar(50) ,-- '人员标识'\n" +
                "   sync                 varchar(10) ,-- '同步标识'\n" +
                "   create_date          datetime ,-- '创建时间'\n" +
                "   rec_state            varchar(50) ,-- '记录状态'\n" +
                "   rec_state_date       datetime ,-- '记录状态时间'\n" +
                "   partition_city_id    varchar(36) ,-- '分区城市标识'\n" +
                "   partition_year       varchar(4) ,-- '分区年份'\n" +
                "   primary key (id)\n" +
                ")");
    }

    //onUpgrade数据库版本号发生改变时才会执行； 特别适 合做表结构的修改
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        if (VERSION <= 1) {
            //添加一个phone字段
            //db.execSQL("alter table info add _create_time varchar(11)");
        }

    }
}
